#e
#Title[u̖{v]
#Text[ÕXyJ[h]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
        let count=0;
        let cx=GetCenterX();
        let cy=GetCenterY();
        let name    = "u̖{v";
        let csd     = GetCurrentScriptDirectory;
        let imgBoss =csd~"img\familiar2.png";
        let angle=0;
	let imgAngle=0;
	let big=0;
	let retune=0;
	let arrayLaserA=[];//LaserObjectÃIuWFNgۑĂ
	let arrayLaserB=[];//LaserObjectB̃IuWFNgۑĂ
	let arrayLaserC=[];//LaserObjectÃIuWFNgۑĂ
	let arrayLaserD=[];//LaserObjectB̃IuWFNgۑĂ
	let LockonX=0;
	let LockonY=0;
	let Flag=false;

    @Initialize {
        CutIn(YOUMU, name, 0, 0, 0, 0, 0);
        SetLife(1);
        SetTimer(60);
        SetScore(1000000);
        SetDamageRate(0,0);
        SetMovePosition02(cx,100,60);
        LoadGraphic(imgBoss);
	SetEnemyMarker(false);
	SetDurableSpellCard;
	LaserObjectA;
	LaserObjectB;
	LaserObjectC;
	LaserObjectD;
    }

        @MainLoop
        {
	imgAngle+=5;
	if(imgAngle>=360){imgAngle=0;}
	if(retune==0&&big<99){big+=2;}
	if(retune==1&&big>1){big-=2;}
	if(count>=50&&count%100==0){
        	retune=1;
		}
	if(count>=50&&count%100==50){
        	retune=0;
		}

	if(count>=200&&count%550==200){
			let j=5;
			while(j<480)
			{
			FiraShot(j);
			j+=15;
			}
        	}
	if(count==200){
		LockonX=(GetPlayerX*10000-GetX*10000+GetX);
		LockonY=(GetPlayerY*10000-GetY*10000+GetY);
		SetMovePosition01(LockonX,LockonY,2);
        	}
	if(GetX<20||GetX>428||GetY>460||GetY<20&&count>=200){
		LockonX=(GetPlayerX*10000-GetX*10000+GetX);
		LockonY=(GetPlayerY*10000-GetY*10000+GetY);
		SetMovePosition01(LockonX,LockonY,2);
		if(!Flag){
			let i=0;
			while(i<12)
			{
        		SetShotDirectionType(PLAYER);
        		let shot01 = 1;
        		CreateShotA(shot01,GetX,GetY,0);
        		SetShotDataA(shot01,0,2,i*30,0,0,2,RED03);
        		FireShot(shot01);
			i=i+1;
			}
			Flag=true;
			}
		}
	if(GetX>=20||GetX<=428||GetY<=460||GetY>=20&&count>=200){
		Flag=false;
		}
        count++;
        yield;
        }

        @DrawLoop {
		SetRenderState(ALPHA);
		SetTexture(imgBoss);
		SetGraphicRect(0,0,192,192);
		SetAlpha(155);
		SetColor(255,255,255);
		SetGraphicScale(0.01*big,1);
		SetGraphicAngle(0,0,imgAngle);
		DrawGraphic(GetX(),GetY());

		SetGraphicScale(0.01*big,1);
		SetGraphicAngle(0,0,-imgAngle);
		DrawGraphic(GetX(),GetY());
	}

    @Finalize {
        DeleteGraphic(imgBoss);
    }

task FiraShot(Angle){
	let obj = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,0,Angle);
	Obj_SetSpeed(obj,1);
	Obj_SetAngle(obj,0);
	ObjShot_SetGraphic(obj,ORANGE01);
	ObjShot_SetDelay(obj,0);
	ObjShot_SetBombResist(obj,true);
    
	while(!Obj_BeDeleted(obj)) {
		if(Obj_GetX(obj)>448){
			Obj_SetPosition(obj,0,Obj_GetY(obj));
			}
			let i=0;
			loop(length(arrayLaserA))
			{
				if(Collision_Obj_Obj(arrayLaserA[i],obj))
				{
					Obj_Delete(obj);
        				FiraShotB(Obj_GetX(obj),Obj_GetY(obj));
					break;
				}
				i++;
			}
		yield;
		}
	}

task FiraShotA(OX,OY){
	let shotse = csd~"se\ShotSE01.wav";
	let obj1 = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj1,OX,OY);
	Obj_SetSpeed(obj1,1);
	Obj_SetAngle(obj1,0);
	ObjShot_SetGraphic(obj1,ORANGE01);
	ObjShot_SetDelay(obj1,0);
	ObjShot_SetBombResist(obj1,true);
	PlaySE(shotse);
    
	while(!Obj_BeDeleted(obj1)) {
		if(Obj_GetX(obj1)>448){
			Obj_SetPosition(obj1,0,Obj_GetY(obj1));
			}
			let i=0;
			loop(length(arrayLaserA))
			{
				if(Collision_Obj_Obj(arrayLaserA[i],obj1))
				{
					Obj_Delete(obj1);
        				FiraShotB(Obj_GetX(obj1),Obj_GetY(obj1));
					break;
				}
				i++;
			}
		yield;
		}
	}
task FiraShotB(OX,OY){
	let shotse = csd~"se\ShotSE01.wav";
	let obj2 = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj2,OX,OY);
	Obj_SetSpeed(obj2,1);
	Obj_SetAngle(obj2,90);
	ObjShot_SetGraphic(obj2,YELLOW01);
	ObjShot_SetDelay(obj2,0);
	ObjShot_SetBombResist(obj2,true);
	PlaySE(shotse);
    
	while(!Obj_BeDeleted(obj2)) {
		if(Obj_GetY(obj2)>480){
			Obj_SetPosition(obj2,Obj_GetX(obj2),0);
			}
			let i=0;
			loop(length(arrayLaserB))
			{
				if(Collision_Obj_Obj(arrayLaserB[i],obj2))
				{
					Obj_Delete(obj2);
        				FiraShotC(Obj_GetX(obj2),Obj_GetY(obj2));
					break;
				}
				i++;
			}
		yield;
		}
	}
task FiraShotC(OX,OY){
	let shotse = csd~"se\ShotSE01.wav";
	let obj3 = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj3,OX,OY);
	Obj_SetSpeed(obj3,1);
	Obj_SetAngle(obj3,180);
	ObjShot_SetGraphic(obj3,BLUE01);
	ObjShot_SetDelay(obj3,0);
	ObjShot_SetBombResist(obj3,true);
	PlaySE(shotse);
    
	while(!Obj_BeDeleted(obj3)) {
		if(Obj_GetX(obj3)<0){
			Obj_SetPosition(obj3,448,Obj_GetY(obj3));
			}
			let i=0;
			loop(length(arrayLaserC))
			{
				if(Collision_Obj_Obj(arrayLaserC[i],obj3))
				{
					Obj_Delete(obj3);
        				FiraShotD(Obj_GetX(obj3),Obj_GetY(obj3));
					break;
				}
				i++;
			}
		yield;
		}
	}
task FiraShotD(OX,OY){
	let shotse = csd~"se\ShotSE01.wav";
	let obj4 = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj4,OX,OY);
	Obj_SetSpeed(obj4,1);
	Obj_SetAngle(obj4,270);
	ObjShot_SetGraphic(obj4,WHITE01);
	ObjShot_SetDelay(obj4,0);
	ObjShot_SetBombResist(obj4,true);
	PlaySE(shotse);
    
	while(!Obj_BeDeleted(obj4)) {
		if(Obj_GetY(obj4)<0){
			Obj_SetPosition(obj4,Obj_GetX(obj4),480);
			}
			let i=0;
			loop(length(arrayLaserD))
			{
				if(Collision_Obj_Obj(arrayLaserD[i],obj4))
				{
					Obj_Delete(obj4);
        				FiraShotA(Obj_GetX(obj4),Obj_GetY(obj4));
					break;
				}
				i++;
			}
		yield;
		}
	}


task LaserObjectA{
        SetShotDirectionType(ABSOLUTE);
	let r=150;
	let angle=90;
	let obj=Obj_Create(OBJ_LASER);
	arrayLaserA=arrayLaserA~[obj];
	Obj_SetX(obj,GetX);
	Obj_SetY(obj,GetY);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,ORANGE01);
	ObjShot_SetDelay(obj,200);
	ObjLaser_SetLength(obj,100);
	ObjLaser_SetWidth(obj,12);
	ObjLaser_SetSource(obj,false);

	while(!Obj_BeDeleted(obj)){
		angle-=0.4;
		Obj_SetX(obj,GetX);
		Obj_SetY(obj,GetY);
		Obj_SetAngle(obj,angle);
		yield;
		}
		let i=0;
		loop(length(arrayLaserA))
		{
			if(arrayLaserA[i]==obj)
			{
				arrayLaserA=erase(arrayLaserA,i);
				break;
			}
			i++;
		}
	}
task LaserObjectB{
        SetShotDirectionType(ABSOLUTE);
	let r=150;
	let angle=180;
	let obj=Obj_Create(OBJ_LASER);
	arrayLaserB=arrayLaserB~[obj];
	Obj_SetX(obj,GetX);
	Obj_SetY(obj,GetY);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,YELLOW01);
	ObjShot_SetDelay(obj,200);
	ObjLaser_SetLength(obj,100);
	ObjLaser_SetWidth(obj,12);
	ObjLaser_SetSource(obj,false);

	while(!Obj_BeDeleted(obj)){
		angle-=0.4;
		Obj_SetX(obj,GetX);
		Obj_SetY(obj,GetY);
		Obj_SetAngle(obj,angle);
		yield;
		}
	}
task LaserObjectC{
        SetShotDirectionType(ABSOLUTE);
	let r=150;
	let angle=270;
	let obj=Obj_Create(OBJ_LASER);
	arrayLaserC=arrayLaserC~[obj];
	Obj_SetX(obj,GetX);
	Obj_SetY(obj,GetY);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,BLUE01);
	ObjShot_SetDelay(obj,200);
	ObjLaser_SetLength(obj,100);
	ObjLaser_SetWidth(obj,12);
	ObjLaser_SetSource(obj,false);

	while(!Obj_BeDeleted(obj)){
		angle-=0.4;
		Obj_SetX(obj,GetX);
		Obj_SetY(obj,GetY);
		Obj_SetAngle(obj,angle);
		yield;
		}
	}
task LaserObjectD{
        SetShotDirectionType(ABSOLUTE);
	let r=150;
	let angle=0;
	let obj=Obj_Create(OBJ_LASER);
	arrayLaserD=arrayLaserD~[obj];
	Obj_SetX(obj,GetX);
	Obj_SetY(obj,GetY);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,WHITE01);
	ObjShot_SetDelay(obj,200);
	ObjLaser_SetLength(obj,100);
	ObjLaser_SetWidth(obj,12);
	ObjLaser_SetSource(obj,false);

	while(!Obj_BeDeleted(obj)){
		angle-=0.4;
		Obj_SetX(obj,GetX);
		Obj_SetY(obj,GetY);
		Obj_SetAngle(obj,angle);
		yield;
		}
	}
}